package nl.ordina.ott.java.client.model;

import java.util.ArrayList;
import java.util.List;

public class Regel4 implements Regel {
	public boolean pasToe(Vakje laatstAangepasteVakje, int waarde, VakjesGroep andereVakjes) {
		if (laatstAangepasteVakje.getOpties().size() == 2) { // als ik exact nog 2 opties over heb
			for (Vakje vakje: andereVakjes.getVakjes()) { // zoek dan een
				if (vakje != laatstAangepasteVakje) { // ander vakje
					if (laatstAangepasteVakje.getOpties().equals(vakje.getOpties())) { // met dezelfde opties
						return elimineerOpties(laatstAangepasteVakje, vakje, andereVakjes, laatstAangepasteVakje.getOpties());
					}
				}
			}
		}
		return false;
	}

	private boolean elimineerOpties(Vakje laatstAangepasteVakje, Vakje vakjeMetZelfdeOpties, VakjesGroep andereVakjes, List<Integer> opties) {
		boolean result = false;
		
		ArrayList<Vakje> overigeVakjes = new ArrayList<Vakje>(7);
		overigeVakjes.addAll(andereVakjes.getVakjes());
		overigeVakjes.remove(laatstAangepasteVakje);
		overigeVakjes.remove(vakjeMetZelfdeOpties);
		
		for (Vakje vakje: overigeVakjes) {
			for (int optie: opties) {
				result |= vakje.elimineerOptie(optie);
			}
		}
		
		return result;
	}
}
